package com.example.leetcode;

/**
 * 动态规划 **参考题解** 难点
 * 丑数 II
 * 给你一个整数 n ，请你找出并返回第 n 个 丑数 。
 * 丑数 就是只包含质因数 2、3 和/或 5 的正整数。
 */
public class Demo0264 {
    public int nthUglyNumber(int n) {
        int f[]=new int[n+1];
        f[1]=1;
        int p2 = 1, p3 = 1, p5 = 1;
        for (int i = 2; i < n+1; i++) {
            int num2=f[p2]*2,num3=f[p3]*3,num5=f[p5]*5;
            f[i]=Math.min(Math.min(num2,num3),num5);
            if (f[i] == num2) {
                p2++;
            }
            if (f[i] == num3) {
                p3++;
            }
            if (f[i] == num5) {
                p5++;
            }
        }
        return f[n];
    }
}
